Dynamic theme color palette generation

ABSTRACT

There is provided a method of changing a theme for a user interface of a computer system comprising receiving an identification of an image with which to define a color palette of a theme for rendering elements of a user interface on a color display of the computer system; analyzing the image to determine at least one predominant color; and defining the color palette in response to the analysis. The image may comprise a background image selected by a user for display by the computer system. Dynamic generation of the color palette matches the user interface to colors to provide flexible and appealing themes. A computer readable memory having recorded thereon instructions to carry out this method is also provided, as well as a device comprising such memory.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of earlier non-provisionalapplication having application Ser. No. 11/416,194 filed May 3, 2006 nowU.S. Pat. No. 7,646,392, granted on Jan. 12, 2010, and claims priorityunder 35 U.S.C. 120 thereto. The disclosure of aforementionedapplication Ser. No. 11/416,194 is hereby incorporated by reference inits entirety.

FIELD

This application relates to the field of computer systems and moreparticularly to a method and system for dynamically generating a colourpalette for a themed graphical user interface.

BACKGROUND

Computing devices including personal computers and mobile communicationdevices, such as cellular phones, personal digital assistants and thelike comprise an operating system having a user interface. The operatingsystem may also provide user interface support for software applicationsinstalled on the device. Often a windowing environment is provided bythe user interface such that a window occupies a delineated area of adisplay monitor.

The user interface of the operating system (in some instances referredto as a “shell”) and/or of the applications may be themed whereby userinterface elements are provided with a common look and feel. Theinterface elements may include borders and controls which contribute tothe visual appearance of the user interface and may include icons,cursors, object borders and shadowing, menus, lists, text boxes or inputboxes, push buttons, radio buttons, scrollbars, toolbars, etc. In someinstances theme packages defining the themed interface may reflect aparticular subject (e.g. “jungle”, “space”, etc.). One important aspectof a theme for computing devices having color display capabilities isthe color palette used to render the user interface elements.

In many user interfaces a desktop metaphor is applied whereby thedisplay screen of the device visualizes a desktop having a backgroundcomponent over which user interface elements are displayed. In many userinterfaces, the background component of the user interface may beconfigured to display an image or “wallpaper” behind foreground userinterface elements. Users often demand flexibility and choice over theappearance of the user interface. One aspect of this choice of is thebackground image to be used.

Coordinating a colour palette to an particular background image toprovide a pleasing and effective theme is problematic. Theme packagesmay be predefined with reference to predetermined images such that achoice of a particular theme invokes the choice of a particularbackground image or vice-versa. However, user's often want toincorporate different images such as favourite color pictures, art workand/or graphics such as team logos, flags or corporate design trademarksthe color of which may not pleasingly or effectively marry with acurrent color palette of the user interface. Thus there is a need todetermine an appropriate color palette to use with a particular desktopimage.

A solution to one or more of these issues is therefore desirable.

BRIEF DESCRIPTION OF THE DRAWINGS

Further features and advantages of the embodiments will become apparentfrom the following detailed description, taken in combination with theappended drawings, in which:

FIG. 1 is a block diagram of a wireless mobile device, an examplecomputer system adapted in accordance with an embodiment and shown incommunication with a wireless network;

FIG. 2 is a block diagram of memory components of FIG. 1 showingsoftware and data components in accordance with an embodiment; and

FIGS. 3 and 4 are flowcharts of operations for dynamically determining acolour palette in accordance with an embodiment.

It will be noted that throughout the appended drawings, like featuresare identified by like reference numerals.

DETAILED DESCRIPTION OF EMBODIMENTS

According to one aspect, there is provided a method of changing a themefor a user interface of a computer system. The method comprises:receiving input via the computer system identifying a color image todisplay as a component of the user interface, the color image fordefining a color palette of the theme for rendering elements of the userinterface on a color display of the computer system; analysing the colorimage using the computer system to determine at least one predominantcolor; defining the color palette using the computer system in responseto the step of analysing; and rendering elements of the user interfaceon the color display in accordance with the color palette, the elementscomprising one or more of icons, cursors, object borders and shadowing,menus, lists, text boxes, input boxes, push buttons, radio buttons,scrollbars and toolbars thereby to color coordinate the elements to thecolor image. The steps of analysing, defining and rendering areautomatically invoked in response to the input identifying the colorimage to automatically generate the color palette and change the theme.The image may comprise a background image selected by a user for displayby the computer system.

Analysing may comprise performing statistical analysis of data of thecolor image to determine said at least one predominant color. There maybe a determining two or more palette candidates using the computersystem for selection by a user to define the color palette. Dynamicgeneration of the color palette matches the user interface to color(s)of the image to provide flexible and appealing themes.

In accordance with another aspect, there is a provided computer system acomputer system for changing a theme of a user interface. The computersystem comprises a color display and a processor and memory configuredto dynamically generate a color palette for rendering elements of thetheme in response to input identifying a color image to display as acomponent of the user interface with which to define the color palette,the elements comprising one or more of icons, cursors, object bordersand shadowing, menus, lists, text boxes, input boxes, push buttons,radio buttons, scrollbars and toolbars thereby to color coordinate theelements to the color image. The processor and memory are configured to:receive an identification of an image with which to define the colorpalette; and automatically analyse the color image to determine at leastone predominant color for defining the color palette.

A computer readable memory having recorded thereon instructions to carryout the method is also provided. Other aspects will be apparent such asa communication device comprising such a memory.

FIG. 1 illustrates a representative example of a computer system, namelya wireless mobile communication device 102, adapted to dynamicallydetermine a color palette for a user interface theme. Though describedwith reference to a wireless mobile device capable of voice and datacommunication and personal data assistant features, persons of ordinaryskill in the art will appreciate that other computer systems may beadapted including personal computers such as desktops and laptops,workstations and the like.

Device 102 is a two-way communication device having at least voice andadvanced data communication capabilities, including the capability tocommunicate with other computer systems. Depending on the functionalityprovided by device 102, it may be referred to as a data messagingdevice, a two-way pager, a cellular telephone with data messagingcapabilities, a wireless Internet appliance, or a data communicationdevice (with or without telephony capabilities). Device 102 maycommunicate with any one of a plurality of fixed transceiver stations104 (only one is shown) within its geographic coverage area. Persons ofskill in the art will appreciate that voice communication capabilitiesare an optional feature and are not required to support the colorpalette determination techniques described herein.

Device 102 will normally incorporate a communication subsystem 111,which includes a receiver, a transmitter, and associated components,such as one or more (preferably embedded or internal) antenna elementsand, local oscillators (LOs), and a processing module such as a digitalsignal processor (DSP) (all not shown). As will be apparent to thoseskilled in field of communications, particular design of communicationsubsystem 111 depends on the communication network in which device 102is intended to operate.

Network access is associated with a subscriber or user of device 102 andtherefore device 102 requires a Subscriber Identity Module or “SIM” card162 to be inserted in a SIM IF 164 in order to operate in the network.Device 102 is a battery-powered device so it also includes a battery IF154 for receiving one or more rechargeable batteries 156. Such a battery156 provides electrical power to most if not all electrical circuitry indevice 102, and battery IF 154 provides for a mechanical and electricalconnection for it. The battery IF 154 is coupled to a regulator (notshown) that provides power V+ to all of the circuitry.

Device 102 includes a microprocessor 138 that controls overall operationof device 102. Communication functions, including at least data andvoice communications, are performed through communication subsystem 111.Microprocessor 138 also interacts with additional device subsystems suchas a display 122, a flash memory 124 or other persistent store, a randomaccess memory (RAM) 126, auxiliary input/output (I/O) subsystems 128, aserial port 130, a keyboard 132, a speaker 134, a microphone 136, ashort-range communications subsystem 140, and any other devicesubsystems generally designated at 142. Some of the subsystems shown inFIG. 1 perform communication-related functions, whereas other subsystemsmay provide “resident” or on-device functions. Notably, some subsystems,such as keyboard 132 and display 122, for example, may be used for bothcommunication-related functions, such as entering a text message fortransmission over a communication network, and device-resident functionssuch as a calculator or task list. Operating system software used bymicroprocessor 138 is preferably stored in a persistent store such asflash memory 124, which may alternatively be a read-only memory (ROM) orsimilar storage element (not shown). Those skilled in the art willappreciate that the operating system, specific device applications, orparts thereof, may be temporarily loaded into a volatile store such asRAM 126.

Microprocessor 138, in addition to its operating system functions,preferably enables execution of software applications on device 102. Apredetermined set of applications that control basic device operations,including at least data and voice communication applications, willnormally be installed on device 102 prior to its release to users. Apreferred application that may be loaded onto device 102 may be apersonal information manager (PIM) application having the ability toorganize and manage data items relating to the user such as, but notlimited to, instant messaging (IM), e-mail, calendar events, voicemails, appointments, and task items. Naturally, one or more memorystores are available on device 102 and SIM 162 to facilitate storage ofPIM data items and other information.

The PIM application preferably has the ability to send and receive dataitems such as email messages via the wireless network. In a preferredembodiment, PIM data items are seamlessly integrated, synchronized, andupdated via the wireless network, with the mobile station user'scorresponding data items stored and/or associated with a host computersystem thereby creating a mirrored host computer on device 102 withrespect to such items. This is especially advantageous where the hostcomputer system is the mobile station user's office computer system.Additional applications may also be loaded onto device 102 throughnetwork (104), an auxiliary I/O subsystem 128, serial port 130,short-range communications subsystem 140, or any other suitablesubsystem 142, and installed by a user in RAM 126 or preferably anon-volatile store (not shown) for execution by microprocessor 138. Suchflexibility in application installation increases the functionality ofdevice 102 and may provide enhanced on-device functions,communication-related functions, or both. For example, securecommunication applications may enable electronic commerce functions andother such financial transactions to be performed using device 102.

In a data communication mode, a received signal such as a text message,an e-mail message, or web page download will be processed bycommunication subsystem 111 and input to microprocessor 138.Microprocessor 138 will preferably further process the signal for outputto display 122 and/or to auxiliary I/O device 128. A user of device 102may also compose data items, such as e-mail messages, for example, usingkeyboard 132 in conjunction with display 122 and possibly auxiliary I/Odevice 128. Keyboard 132 is preferably a complete alphanumeric keyboardand/or telephone-type keypad. These composed items may be transmittedover a communication network through communication subsystem 111 orshort-range communication subsystem 140.

In the present embodiment, display 122 comprises a color display devicethat is capable of displaying a plurality of colors.

For voice communications, the overall operation of device 102 issubstantially similar, except that the received signals would be outputto speaker 134 and signals for transmission would be generated bymicrophone 136. Alternative voice or audio I/O subsystems, such as avoice message recording subsystem, may also be implemented on device102. Although voice or audio signal output is preferably accomplishedprimarily through speaker 134, display 122 may also be used to providean indication of the identity of a calling party, duration of a voicecall, or other voice call related information, as some examples.

Data port 130 in FIG. 3 is normally implemented in a personal digitalassistant (PDA)-type communication device for which synchronization witha user's desktop computer is a desirable, albeit optional, component.The data port can be serial or USB. The data port 130 enables a user toset preferences through an external device or software application andextends the capabilities of device 102 by providing for information orsoftware downloads to device 102 other than through a wirelesscommunication network. The alternate download path may, for example, beused to load an encryption key onto device 102 through a direct and thusreliable and trusted connection to thereby provide secure devicecommunication.

Short-range communications subsystem 140 of FIG. 1 is an additionaloptional component that provides for communication between device 102and different systems or devices, which need not necessarily be similardevices. For example, subsystem 140 may include an infrared device andassociated circuits and components, or a Bluetooth™ communication moduleto provide for communication with similarly enabled systems and devices.Bluetooth is a registered trademark of Bluetooth SIG, Inc. A Wi-Fi™communication subsystem may also be employed.

FIG. 2 illustrates a notional view 200 of memory store components 124and 126 of FIG. 1 in a representative embodiment and in which are storedinstructions and data to configure processor 138 to dynamicallydetermine a color palette for a theme.

Persistent store 124 stores theme data 214 for a plurality of defineduser interface themes, namely Theme A, Theme B, and Theme C and images216 for a plurality of images 1 to N. Images may be stored in accordancewith various common image formats such as .gif, .jpg, .bmp, .png, etc.Persistent store 124 also stores initialization data 218 for identifyinga current theme 218A (e.g. themes 214), a current background image 218B(e.g. from images 216) and a current screen saver image 218C (e.g. fromimages 216) to apply upon start-up of device 102.

Volatile store 126 stores a theme manager component 202 adapted to applytheme data to user interface elements (not shown) for displaying oncolor-capable display 122. Theme data to apply comprises current themedata 204 which comprises a color palette 206 for rendering the elementsin specific colors. Though not shown, persisted themes 214 compriserespective color palette data as well. Theme manager 202 may beconfigured to load current theme data 204 from theme data store 214using current theme initialization data 218A. A current background imageor wallpaper 208 is stored for display as is an optional screen saverimage 210 for display over at least a portion of the display to hide thecontent thereof when the device has not been active for a period of timeor upon initiation by the user. Volatile store 126 may be loaded withbackground and screen saver image data from persistent store 124 usinginitialization data 218B and 218C.

Theme manager component 202 may be configured to facilitate a user tochoose a particular stored theme 214 as current theme 204, persistingthe choice as initialization data 218A. Similarly, choice of screensaver and background may be facilitated. More importantly, however, inaccordance with the present embodiment, theme manager 202 is adapted todynamically determine a color palette for use with a selected backgroundimage for current theme 204 from color identified by a color determinercomponent 220. Color determiner component 220 is configured to analyzean image (e.g. current background 208) to determine one or more colorsdefining the image. The identified color is then used to dynamicallydetermine the color palette for use with the image in the current themeas discussed further below. The color palette data may be persisted totheme data store 214, for example, defining a user-defined theme orcurrent theme 218A.

Store 126 also comprises a Web browser application component useful fornavigating Web pages via network 104. Web browser component 212 iscapable of saving to persistent store 124 images (e.g. one or more ofimages 1-N 216) retrieved during browsing. Optionally, Web browser 212may also be adapted to retrieve and persist additional themes (e.g.theme data defining a Theme D (not shown)). Persons of ordinary skill inthe art will appreciate that device 102 may be adapted for storingimages and themes in different or additional manners such as viaremovable storage media (flash memory, DVD, CD-ROM, floppy or otherdiskettes or tapes, all not shown), other data communication such ase-mail or IM communications via subsystem 111, via short-rangecommunications 140, or via data port 130 such as when device 102 iscoupled to a desktop computer via a cable connection (e.g. USB) asdiscussed above. Images and themes may be stored to store 124 atconfiguration time during manufacturing as well.

Thus theme manager 202 may load and apply predefined theme data ordetermine dynamically and apply theme data in response to a user'schoice of background image. The dynamically-determined data may bepersisted for re-use. However, alternatively the dynamically-determineddata may be regenerated again upon start-up, for example.

FIG. 3 and FIG. 4 are flowcharts of operations 300 and 400 fordynamically generating color palette data with which to theme userinterface elements. Operations start 301 with the invocation of themegeneration 302 such as by a user's choice of a new background image. Asis known, an image management interface (not shown) may be invoked tolist images 216 to a user. One image management choice may be theselection of an image to be used as the current background 208. Thechoice of a particular image is persisted as initialization data 218B(e.g. a pointer or file name, flag etc.). In accordance with the presentembodiment, the choice of current background 208 invokes a themegeneration operation 302. At step 304, the new color palette to apply isdetermined from the background image 208. At step 306, the new colorpalette is applied in the current theme as color palette 206 andoperations end 307.

Operations 400 illustrate an embodiment of new color palettedetermination step 304. Following a start 401, a predominant color ofimage 208 is identified using statistical analysis of the image (step402). In one embodiment, a simple histogram analysis may be performedcounting instances of the colors of the image and the predominant colordetermined based on the count. The source for the analysis may be theraw image itself or a blended low pass filtered version thereof. Ablended low pass version of the image helps to capture what the humaneye registers and avoids spurious peaks in the histogram.

A new color palette is defined (step 404) using the predominant color. Acolor wheel-like table (not shown) may be used to select matching colorsautomatically and operations 400 end (step 405). Alternatively,additional predominant colors may be determined from image 208 in asimilar manner to define the color palette. For example, many graphicimages such as logos or trademarks are defined using a relatively fewcontrasting colors for heightening impact. Two or three of these colorsmay be determined using the color determiner to define the colorpalette. A table or difference mechanism may be used to review thedetermined colors and identify appropriate contrasting color matches forthe color palette. For example, if the predominant colors are green,white and yellow, it may be preferred to define the color palette withtwo colors that provide greater contrast (e.g. green and white ratherthan green and yellow).

Another alternative approach (not shown) permits a user to selectbetween several color combinations that are determined to blend wellwith the image. Steps 402 and 404 may be adapted to identify two or morenew palette candidates such as by determining two or predominant colorsand respective matching colors to correspond with these predominantcolors or by providing different color matches to one predominant colorto define different candidate palettes. A user may be presented withcolor swatches or other images representative of the candidate palettesfor selection to define the color palette. Alternatively, a candidatepalette may be applied (step 306, as adapted) and the user asked toconfirm the candidate palette as the new color palette.

Persons of ordinary skill in the art will appreciate that a colorpalette for a particular image may be generated once and a persisted tostore 124 (e.g. at step 404) for subsequent use on a re-start. The colorpalette may be stored along with an association to the image used todefine the palette as a new theme (214) for example. If the user changesbackground images and reselects an image for which a color palette waspreviously generated, the color palette need not be regenerated. Assuch, a determination at or about step 302 may be made whether anassociated color palette exists. If so, step 304 is avoided in favor ofretrieving the existing color palette from store 124 and step 306applies the retrieved color palette. In a mobile device environmentwhere persistent store 124 may be relatively small, it may not bepreferred to store color palette information in this manner andregeneration of the color palette on-the-fly may be preferred.

Theme generation may be initiated by the selection of a background imagebut persons of ordinary skill in the art will appreciate that a colorpalette may be generated alternatively from other identified images suchas from a screen saver image. A user may like to theme their device withthe colors of their native country's flag or favourite team logo. Animage of the flag or logo may be identified to the theme manager and acolor palette generation feature invoked even though flag or logo is notdefined as component of the user interface such as the background imageor screen saver.

Dynamic color palette generation allows on-the-fly theme generation,which makes theme GUIs flexible and removes dependencies on predefinedthemes. Predefined theme storage may be constrained by the availablepersistent memory of a device. Adding themes such as by downloading maybe avoided. Automatic generation to match images allows balancing toavoid unattractive contrasts between theme colors and image colors.

1. A method of changing a theme of a user interface of a computer systemcomprising the steps of: receiving input via the computer systemidentifying a color image to display as a component of the userinterface, said color image for defining a color palette of the themefor rendering elements of the user interface on a color display of thecomputer system, the color image comprising a background image or screensaver image; automatically analysing the color image using the computersystem to determine at least one predominant color in response to theinput identifying the color image; automatically defining the colorpalette based on the at least one predominant color using the computersystem in response to the step of analysing; and automatically renderingelements of the user interface on the color display in accordance withthe color palette, the elements comprising one or more of icons,cursors, object borders and shadowing, menus, lists, text boxes, inputboxes, push buttons, radio buttons, scrollbars and toolbars thereby tocolor coordinate the elements to the color image.
 2. The method of claim1 comprising a step of storing the color palette to a persistent storeof the computer system for subsequent use.
 3. The method of claim 1wherein the step of analysing comprises performing statistical analysisof data of the color image to determine said at least one predominantcolor.
 4. The method of claim 1 comprising a step of determining two ormore palette candidates using the computer system for selection by auser to define the color palette.
 5. The method of claim 1 comprising astep of storing the color image to the computer system.
 6. The method ofclaim 5 wherein the step of storing is performed in response to a user'sbrowsing of a Web page.
 7. A computer system for changing a theme of auser interface, the system comprising: a color display; and a processorand memory configured to dynamically generate a color palette forrendering elements of the theme in response to input identifying a colorimage to display as a component of the user interface with which todefine the color palette, the elements comprising one or more of icons,cursors, object borders and shadowing, menus, lists, text boxes, inputboxes, push buttons, radio buttons, scrollbars and toolbars thereby tocolor coordinate the elements to the color image; wherein the processorand memory are configured to: receive an identification of an image withwhich to define the color palette, the identification of an imagecomprising a user input to select the image to display as a backgroundimage or screen saver image of the user interface; and automaticallyanalyse the color image to determine at least one predominant color fordefining the color palette.
 8. The computer system of claim 7 whereinthe processor and memory are configured to store the color palette to apersistent store of the computer system for subsequent use.
 9. Thecomputer system of claim 7 wherein the processor and memory areconfigured to perform statistical analysis of data of the image todetermine said at least one predominant color.
 10. The computer systemof claim 7 wherein the processor and memory are configured to determinetwo or more palette candidates for selection by a user to define thecolor palette.
 11. The computer system of claim 7 wherein the processorand memory are configured to store the color image to the computersystem.
 12. The computer system of claim 7 wherein the system is awireless mobile device.
 13. A computer readable memory having recordedthereon instructions for configuring a processor, when executed, tochange a theme of a user interface of a computer system, theinstructions configuring the processor to: receive input via thecomputer system identifying a color image to display as a component ofthe user interface, said color image for defining a color palette of thetheme for rendering elements of the user interface on a color display ofthe computer system, the color image comprising a background image or ascreen saver image; analyse the color image using the computer system todetermine at least one predominant color; define the color palette usingthe computer system in response to the step of analysing; and renderelements of the user interface on the color display in accordance withthe color palette, the elements comprising one or more of icons,cursors, object borders and shadowing, menus, lists, text boxes, inputboxes, push buttons, radio buttons, scrollbars and toolbars thereby tocolor coordinate the elements to the color image; automatically inresponse to the input identifying the color image to automaticallygenerate the color palette and change the theme.
 14. The computerreadable memory of claim 13 wherein the instructions further configurethe processor to store the color palette to a persistent store of thecomputer system for subsequent use.
 15. The computer readable memory ofclaim 13 wherein the instructions further configure the processor toperform statistical analysis of data of the color image to determinesaid at least one predominant color.
 16. The computer readable memory ofclaim 13 wherein the instructions further configure the processor todetermine two or more palette candidates using the computer system forselection by a user to define the color palette.
 17. The computerreadable memory of claim 13 wherein the instructions further configurethe processor to store the color image to the computer system.